/**
 * Created by jiachenpan on 16/11/18.
 */

export function parseTime(time, cFormat) {
  if (arguments.length === 0) {
    return null
  }
  const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
  let date
  if (typeof time === 'object') {
    date = time
  } else {
    if (('' + time).length === 10) time = parseInt(time) * 1000
    date = new Date(time)
  }
  const formatObj = {
    y: date.getFullYear(),
    m: date.getMonth() + 1,
    d: date.getDate(),
    h: date.getHours(),
    i: date.getMinutes(),
    s: date.getSeconds(),
    a: date.getDay()
  }
  const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
    let value = formatObj[key]
    if (key === 'a') return ['一', '二', '三', '四', '五', '六', '日'][value - 1]
    if (result.length > 0 && value < 10) {
      value = '0' + value
    }
    return value || 0
  })
  return time_str
}

// export function timeToDate(time, cFormat) {
//   if (arguments.length === 0) {
//     return null
//   }
//   let date
//   if (typeof time === 'object') {
//     date = time
//   } else {
//     if (('' + time).length === 10) time = parseInt(time) * 1000
//     date = new Date(time)
//   }
//   const formatObj = {
//     y: date.getFullYear(),
//     m: date.getMonth() + 1,
//     d: date.getDate(),
//     h: date.getHours(),
//     i: date.getMinutes(),
//     s: date.getSeconds(),
//     a: date.getDay()
//   }
//   let newDate
//   newDate = new Date
//   return newDate
// }

export function formatTime(time, option) {
  time = +time * 1000
  const d = new Date(time)
  const now = Date.now()

  const diff = (now - d) / 1000

  if (diff < 30) {
    return '刚刚'
  } else if (diff < 3600) { // less 1 hour
    return Math.ceil(diff / 60) + '分钟前'
  } else if (diff < 3600 * 24) {
    return Math.ceil(diff / 3600) + '小时前'
  } else if (diff < 3600 * 24 * 2) {
    return '1天前'
  }
  if (option) {
    return parseTime(time, option)
  } else {
    return d.getMonth() + 1 + '月' + d.getDate() + '日' + d.getHours() + '时' + d.getMinutes() + '分'
  }
}

export function thousand(num) {
  /* --
		给整数加上千位分隔符
		-as thousand
		-p num num 源数字
		-r string 加上千位分隔符的数字字符串
		-eg
			var thousand = require('air/number/thousand');
			thousand(289887); //返回 289,887
			thousand(-89887); //返回 -89,887
	*/
  num = String(num).split('')
  let i = num.length
  let j = 0
  while (i--) {
    j++
    if (j === 4) {
      num.splice(i + 1, 0, ',')
      j = 1
    }
  }
  num[0] === '-' && num[1] === ',' && num.splice(1, 1)
  return num.join('')
}

export function thousandFloat(num) {
  /* --
		给数字（整数、浮点数）加上千位分隔符
		-as thousandFloat
		-p num num 源数字
		-r string 加上千位分隔符的数字字符串
		-eg
			var thousandFloat = require('air/number/thousandFloat');
			thousandFloat(289887.89); //返回 289,887.89
			thousandFloat(-89887); //返回 -89,887
	*/
  num = String(num).split('.')
  return num.length > 1 ? thousand(num[0]) + '.' + num[1] : thousand(num[0])
}

export function formatSearchTime(str, start) {
  /*
  * 格式化查询时间，如
	*/
  str = str.replace('年', '-').replace('月', '-').replace('日', ' ')
  return start ? str + '00:00:00' : str + '23:59:59'
}
